package com.zeus.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zeus.mapper.PostMapper;
import com.zeus.pojo.Post;
import com.zeus.pojo.Type;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 冯扬龙
 * @date 2021/6/10 12:34
 */
@Service
public class PostServiceImpl implements PostService{

    @Autowired
    private PostMapper postMapper;

    /**
     * 后台：
     查询功能,高级查询+数据渲染在后端页面上，高级查询走的是mapper层的这个方法，渲染数据走的是service层的方法
     */
    @Override
    public PageInfo<Post> queryPointAndAllPost(int page, int pageSize, Post post) {
        //        mybatis分页实现
        PageHelper.startPage(page,pageSize);
        List<Post> list = postMapper.queryPointAndAllPost(post);
        PageInfo<Post> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 后台：
     删除功能，支持批量删除，前端传过来的是id字符串集合，假如是只删除一个的话就是一个字符串，假如同时选中多个的话就是批量删除
     所以支持单一删除和批量删除
     */
    @Override
    public int deletePostById(Integer id) {
        return postMapper.deletePostById(id);
    }

    /**
     * 前后台交互，首页数据渲染：
     * 右边栏有一个状态栏，我要实现的功能是根据对应的状态点击进去然后可以查看具体的post对象也就是具体的发布的信息
     * 显示在我的眼前，所以这个叫根据状态来查询对应的post对象
     失物招领已完成 1 0
     失物招领未完成 1 1
     寻物启事已完成 0 0
     寻物启事未完成 0 1
     status状态：1为进行中，0为结束',
     flag：1为失物招领，0为寻物启事',
     */
    @Override
    public int getPostByFlagAndStatus(Integer flag, Integer status) {
        return postMapper.getPostByFlagAndStatus(flag,status);
    }

    /**
     * 前端首页：
     * 点击查看详情按钮：
     每个失物栏都会有查看详情这个按钮，点击这个按钮就可以自动拿到对应的postid,通过id就可以拿到对应的post对象
     */
    @Override
    public Post getPostByPostId(Integer id) {
        return postMapper.getPostByPostId(id);
    }

    /**
     前端：
     点击查看详情页面：
     每个认只要点开了详情那么曝光次数就应该+1，所以这个方法是增加曝光次数的
     */
    @Override
    public int addViewCount(Post post) {
        return postMapper.addViewCount(post);
    }

    /**
     * 前端：
     * 点击发布模块：
     * 进入相应的发布页面，里面需要显示类型(寻物还是认领)，物品分类（下拉框，衣服还是书本）
     * 标题，详细文字描述，还有图片，然后最后一个就是发布按钮
     * 这个方法的作用就是点击发布按钮发布,发布的时候肯定要发布的是相关物品类型的信息也就是post对象
     * +要上传的图片也就是说点击发送这个按钮里面会带这这些东西到后台来
     */
    @Override
    public int shutPost(Post post) {
        return postMapper.shutPost(post);
    }

    /**
     * 前端：
     * 点击进入我的模块
     * 我可以对失物的状态进行修改,把正在进行招领的变成已经招领完成的
     *
     * @param post
     */
    @Override
    public int updateStatus(Post post) {
        return postMapper.updateStatus(post);
    }

}
